@@ -92,6 +92,10 @@ AWS_SANDBOX=false |
||
92 | 92 |
# require you to bundle a corresponding gem via Gemfile. |
93 | 93 |
FARADAY_HTTP_BACKEND=typhoeus |
94 | 94 |
|
95 |
+# Specify the default User-Agent header value for HTTP requests made |
|
96 |
+# by Agents that allow overriding the User-Agent header value. |
|
97 |
+DEFAULT_HTTP_USER_AGENT="Huginn - https://github.com/cantino/huginn" |
|
98 |
+ |
|
95 | 99 |
# Allow JSONPath eval expresions. i.e., $..price[?(@ < 20)] |
96 | 100 |
# You should not allow this on a shared Huginn box because it is not secure. |
97 | 101 |
ALLOW_JSONPATH_EVAL=false |
@@ -21,9 +21,7 @@ module WebRequestConcern |
||
21 | 21 |
@faraday ||= Faraday.new { |builder| |
22 | 22 |
builder.headers = headers if headers.length > 0 |
23 | 23 |
|
24 |
- if (user_agent = interpolated['user_agent']).present? |
|
25 |
- builder.headers[:user_agent] = user_agent |
|
26 |
- end |
|
24 |
+ builder.headers[:user_agent] = user_agent |
|
27 | 25 |
|
28 | 26 |
builder.use FaradayMiddleware::FollowRedirects |
29 | 27 |
builder.request :url_encoded |
@@ -58,4 +56,9 @@ module WebRequestConcern |
||
58 | 56 |
def faraday_backend |
59 | 57 |
ENV.fetch('FARADAY_HTTP_BACKEND', 'typhoeus').to_sym |
60 | 58 |
end |
61 |
-end |
|
59 |
+ |
|
60 |
+ def user_agent |
|
61 |
+ interpolated['user_agent'].presence || |
|
62 |
+ ENV.fetch('DEFAULT_HTTP_USER_AGENT', Faraday.new.headers[:user_agent]) |
|
63 |
+ end |
|
64 |
+end |
@@ -63,4 +63,29 @@ shared_examples_for WebRequestConcern do |
||
63 | 63 |
agent.should_not be_valid |
64 | 64 |
end |
65 | 65 |
end |
66 |
-end |
|
66 |
+ |
|
67 |
+ describe "User-Agent" do |
|
68 |
+ before do |
|
69 |
+ @default_http_user_agent = ENV['DEFAULT_HTTP_USER_AGENT'] |
|
70 |
+ ENV['DEFAULT_HTTP_USER_AGENT'] = nil |
|
71 |
+ end |
|
72 |
+ |
|
73 |
+ after do |
|
74 |
+ ENV['DEFAULT_HTTP_USER_AGENT'] = @default_http_user_agent |
|
75 |
+ end |
|
76 |
+ |
|
77 |
+ it "should have the default value set by Faraday" do |
|
78 |
+ agent.user_agent.should == Faraday.new.headers[:user_agent] |
|
79 |
+ end |
|
80 |
+ |
|
81 |
+ it "should be overridden by the environment variable if present" do |
|
82 |
+ ENV['DEFAULT_HTTP_USER_AGENT'] = 'Huginn - https://github.com/cantino/huginn' |
|
83 |
+ agent.user_agent.should == 'Huginn - https://github.com/cantino/huginn' |
|
84 |
+ end |
|
85 |
+ |
|
86 |
+ it "should be overriden by the value in options if present" do |
|
87 |
+ agent.options['user_agent'] = 'Override' |
|
88 |
+ agent.user_agent.should == 'Override' |
|
89 |
+ end |
|
90 |
+ end |
|
91 |
+end |